package praktikum4Test;

import static org.junit.Assert.assertEquals;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import praktikum4Reservierungskomponente.Datentyp.DZusatzleistungName;
import praktikum4Reservierungskomponente.Datentyp.DZusatzleistungNr;
import praktikum4Reservierungskomponente.Entitaeten.EZusatzleistungen;
import praktikum4Reservierungskomponente.Komponente.ReservierungsKomponente;

public class TestReservierungsKomponente {

	@Before
	public void test_reset() {
		praktikum4Reservierungskomponente.Verwalter.VReservierungsServices.res();
		praktikum4GastKomponente.Verwalter.VGastServices.res();
	}
	
	@After
	public void test_reset2() {
		praktikum4Reservierungskomponente.Verwalter.VReservierungsServices.res();
		praktikum4GastKomponente.Verwalter.VGastServices.res();
	}
	
	@Test
	public void test_erzeugeZusatzleistungen() {
		ReservierungsKomponente reservierungsKomponente = new ReservierungsKomponente(null);
		EZusatzleistungen res1 = reservierungsKomponente.erzeugeZusatzleistungen("Rueckenmassage");
		EZusatzleistungen res2 = getZusatzleistung(res1.getZusatzleistungNr().getNr());
		assertEquals(res1, res2);
	}
	
	public static EZusatzleistungen getZusatzleistung(int nr){
		 
		String querry = "SELECT * FROM ZUSATZLEISTUNG WHERE DZUSATZLEISTUNGNR = " + nr;
		System.out.println(querry);
		EZusatzleistungen zulei;
	
		Statement stmt = statement();
		
		try {
			ResultSet rs = stmt.executeQuery(querry);
			rs.next();
			zulei = new EZusatzleistungen(new DZusatzleistungName(rs.getString("DZUSATZLEISTUNGNAME")), new DZusatzleistungNr(rs.getInt("DZUSATZLEISTUNGNR")));
			stmt.close();
			return zulei;
		} catch (SQLException e) {
			e.printStackTrace();
			throw new ExceptionInInitializerError("Conection Faild");
		}

	}
	
	public static Statement statement() {

		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			String url = "jdbc:oracle:thin:@oracle.informatik.haw-hamburg.de:1521:inf09";
			Connection con = DriverManager.getConnection(url,
					praktikum4GastKomponente.Connection.ConnectionDATA.ACC,
					praktikum4GastKomponente.Connection.ConnectionDATA.PASS);
			return con.createStatement();
		} catch (SQLException e) {
			throw new ExceptionInInitializerError("Conection Faild");
		} catch (ClassNotFoundException e) {
			throw new ExceptionInInitializerError("Conection Faild");
		}
	}
	
	
}

